type ColSpanType = number | string;
export interface ColEx {
  style?: any;
  /**
   * raster number of cells to occupy, 0 corresponds to display: none
   * @default none (0)
   * @type ColSpanType
   */
  span?: ColSpanType;

  /**
   * raster order, used in flex layout mode
   * @default 0
   * @type ColSpanType
   */
  order?: ColSpanType;

  /**
   * the layout fill of flex
   * @default none
   * @type ColSpanType
   */
  flex?: ColSpanType;

  /**
   * the number of cells to offset Col from the left
   * @default 0
   * @type ColSpanType
   */
  offset?: ColSpanType;

  /**
   * the number of cells that raster is moved to the right
   * @default 0
   * @type ColSpanType
   */
  push?: ColSpanType;

  /**
   * the number of cells that raster is moved to the left
   * @default 0
   * @type ColSpanType
   */
  pull?: ColSpanType;

  /**
   * <576px and also default setting, could be a span value or an object containing above props
   * @type { span: ColSpanType, offset: ColSpanType } | ColSpanType
   */
  xs?: { span: ColSpanType; offset: ColSpanType } | ColSpanType;

  /**
   * ≥576px, could be a span value or an object containing above props
   * @type { span: ColSpanType, offset: ColSpanType } | ColSpanType
   */
  sm?: { span: ColSpanType; offset: ColSpanType } | ColSpanType;

  /**
   * ≥768px, could be a span value or an object containing above props
   * @type { span: ColSpanType, offset: ColSpanType } | ColSpanType
   */
  md?: { span: ColSpanType; offset: ColSpanType } | ColSpanType;

  /**
   * ≥992px, could be a span value or an object containing above props
   * @type { span: ColSpanType, offset: ColSpanType } | ColSpanType
   */
  lg?: { span: ColSpanType; offset: ColSpanType } | ColSpanType;

  /**
   * ≥1200px, could be a span value or an object containing above props
   * @type { span: ColSpanType, offset: ColSpanType } | ColSpanType
   */
  xl?: { span: ColSpanType; offset: ColSpanType } | ColSpanType;

  /**
   * ≥1600px, could be a span value or an object containing above props
   * @type { span: ColSpanType, offset: ColSpanType } | ColSpanType
   */
  xxl?: { span: ColSpanType; offset: ColSpanType } | ColSpanType;
}

// 组件类型别名
export type ComponentType =
  | 'Input' // 输入框
  | 'InputGroup' // 输入框组
  | 'InputPassword' // 密码输入框
  | 'InputSearch' // 搜索输入框
  | 'InputTextArea' // 多行输入框
  | 'InputNumber' // 数字输入框
  | 'InputCountDown' // 计时倒计时输入框
  | 'Select' // 下拉选择框
  | 'ApiSelect' // API下拉选择框
  | 'DictSelect' // 字典下拉选择框
  | 'UserSelect' // 用户下拉选择框
  | 'TreeSelect' // 树形下拉选择框
  | 'ApiTree' // API树形选择框
  | 'ApiTreeSelect' // API树形下拉选择框
  | 'ApiRadioGroup' // API单选框组
  | 'RadioButtonGroup' // 单选框组
  | 'RadioGroup' // 复选框组
  | 'Checkbox' // 复选框
  | 'CheckboxGroup' // 复选框组
  | 'AutoComplete' // 智能自动完成
  | 'ApiCascader' // API级联选择器
  | 'Cascader' // 级联选择器
  | 'DatePicker' // 日期选择框
  | 'MonthPicker' // 月份选择框
  | 'RangePicker' // 日期范围选择框
  | 'WeekPicker' // 周选择框
  | 'TimePicker' // 时间选择框
  | 'TimeRangePicker' // 时间段选择框
  | 'Switch' // 开关
  | 'StrengthMeter' // 密码强度 meter
  | 'Upload' // 上传
  | 'ImageUpload' // 图片上传
  | 'IconPicker' // 图标选择器
  | 'Render' // 渲染
  | 'Slider' // 滑动条
  | 'Rate' // 评分
  | 'Divider' // 分割线
  | 'ApiTransfer'; // API穿梭框
